import store from "@/store";

const baseURL = 'https://pcapi-xiaotuxian-front-devtest.itheima.net';
const request = {
  invoke(args) {
    uni.showLoading({ title: '加载中' });
    if (!args.url.startsWith('http')) {
      args.url = baseURL + args.url;
    }
    args.header = {
      ...args.header, // 保留原本的 header
      'source-client': 'miniapp', // 添加小程序端调用标识
      // 按后台给的文档传递数据，如果不通，就需要和后台沟通
      'Authorization': store.state.user?.profile?.token
    };
  },
  complete(res) {
    uni.hideLoading();
  },
};
// 对 request 和 uploadFile做了统一的请求前拦截封装
uni.addInterceptor('request', request);
uni.addInterceptor('uploadFile', request);

// 对全局请求做了统一的封装，页面要用，就引进 http 直接发送请求即可
// http({url:'/list'})
const http = (options) => {
  return new Promise((resolve, reject) => {
    uni.request({
      ...options,
      success(res) {
        // 如果没登录，也就是状态 401，就跳转登录页即可
        // console.log('res -----> ', res);
        if (res.statusCode === 401) {
          uni.navigateTo({ url: '/pages/login/index' })
        }
        if (res.statusCode >= 200 && res.statusCode < 300) {
          resolve(res.data);
        } else {
          reject(res);
        }
      },
      fail(err) {
        reject(err);
      },
    });
  });
};

export default http;
